public class AddBinary {
    /**
     * 给你两个二进制字符串，返回它们的和（用二进制表示）。
     * 输入为 非空 字符串且只包含数字 1 和 0。
     * @param a
     * @param b
     * @return
     * 输入: a = "11", b = "1"
     * 输出: "100"
     */
    public static String addBinary(String a, String b) {
        if (a.equals("0")&&b.equals("0")){
            return "0";
        }
        char[] arr_a = a.toCharArray();
        char[] arr_b = b.toCharArray();
        int max_len  = arr_a.length>arr_b.length?arr_a.length:arr_b.length;
        char[] arr_c = new char[max_len+1];
        for (int i=arr_a.length-1;i>=0;i--){
            arr_c[arr_c.length-arr_a.length+i]=arr_a[i];
        }
        int temp =0;

        for (int i=arr_b.length-1;i>=0;i--){
            arr_c[arr_c.length-arr_b.length+i] += arr_b[i]+temp;
            if (arr_c[arr_c.length-arr_b.length+i]==98){
                arr_c[arr_c.length-arr_b.length+i] ='0';
                temp = 1;
            }else if(arr_c[arr_c.length-arr_b.length+i]==97){
                arr_c[arr_c.length-arr_b.length+i] ='1';
                temp = 0;
            }else {
                arr_c[arr_c.length-arr_b.length+i] ='0';
                temp = 0;
            }
        }
        boolean flag = true;
        if (temp==1){
            for (int i=arr_c.length-arr_b.length-1;i>=0;i--){
                if(flag==false){
                    break;
                }
                if (arr_c[i]=='1'){
                    arr_c[i] ='0';
                }else {
                    arr_c[i] = '1';
                    flag = false;
                }
            }

        }
        String  s= "";
        boolean zero_flag = true;
        for(int i=0;i<arr_c.length;i++){
            if (zero_flag==false){
                s+= arr_c[i];
            }
            if (arr_c[i]=='1'&&zero_flag==true){
                s+= arr_c[i];
                zero_flag = false;
            }



        }

        return s;

    }

    public static void main(String[] args) {
        String a= "1";
        String b= "0";
        System.out.println(addBinary(a,b));



    }
}
